# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

EXPORTS.mozilla += [
    'fallible.h',
]

Library('fallible')

SOURCES += [
    'fallible.cpp',
]

if CONFIG['_MSC_VER']:
    # MSVC normally adds linker directives relative to the CRT in a .drectve
    # section in .obj files. Then, when linking objects, it adds those
    # directives as if they were given as command line arguments. This can
    # lead to trying to include link CRTs because different objects are
    # compiled with different CRT options (i.e. -MT vs. -MD), and failing.
    # The only source in this directory doesn't expose anything that depends
    # on a CRT, so it doesn't need to be bound to a specific one.
    # Adding the -Zl option makes MSVC not store linker directives in the
    # object. This allows to link fallible.obj to binaries independently of
    # the CRT they use.
    CXXFLAGS += [
        '-Zl',
    ]

    # This further prevents the CRT name from getting into the .obj file,
    # by avoiding pulling in a bunch of string code that uses the CRT.
    DEFINES['mozilla_Char16_h'] = True
